Cloud9のディスクサイズを拡張してみた
Cloud9はクラウド上で利用できるIDE(統合開発環境)です。
ローカル環境に左右されることなくAWS開発環境をすばやく立ち上げることができ、 同じ開発環境を複数メンバーで同時編集も可能で、とても便利です。
しかしCloud9のディスクサイズは有限なので、各種ライブラリをインストールしたりDockerを動かしたりしていると、ディスクが不足してしまいます。
そこで、Cloud9のディスクサイズを増やす方法を紹介します。
この方法は次の公式ドキュメントに記載されています。詳細はこちらをご参照ください。
Cloud9の構成
Cloud9の実態は EC2 です。
実際にCloud9の環境を構築すると、CloudFormationのスタックが作成されてEC2とセキュリティグループが 構築されていることがわかります。
要するに、Cloud9のディスクサイズを拡張するということは、EBS のボリュームサイズを変更するということです。
すなわち、この作業を行うためには EBSのボリュームサイズを変更する権限 をログインしているIAMユーザー、またはCloud9のEC2にアタッチしたIAM Roleが持っている必要があります。
このあたりのCloud9でAWS CLIを実行する際の権限の詳細は、次の弊社ブログをご参照ください。
- AWS Cloud9環境で利用できる一時クレデンシャル『AWS Managed Temporary Credentials』について調べてみた | Developers.IO
- Cloud9からIAM Roleの権限でAWS CLIを実行する | Developers.IO
現在のCloud9のディスクサイズを確認する
df
コマンドを利用して、シェルからCloud9のディスクサイズを確認してみます。
サイズは10Gで8.2G使用しているので、Dockerを使おうとすると一瞬でサイズが足りなくなりそうです。
Cloud9のディスクサイズを拡張する
次のシェルスクリプトを作成します。
#!/bin/bash # Specify the desired volume size in GiB as a command-line argument. If not specified, default to 20 GiB. SIZE=${1:-20} # Get the ID of the environment host Amazon EC2 instance. INSTANCEID=$(curl http://169.254.169.254/latest/meta-data/instance-id) # Get the ID of the Amazon EBS volume associated with the instance. VOLUMEID=$(aws ec2 describe-instances \ --instance-id $INSTANCEID \ --query "Reservations[0].Instances[0].BlockDeviceMappings[0].Ebs.VolumeId" \ --output text) # Resize the EBS volume. aws ec2 modify-volume --volume-id $VOLUMEID --size $SIZE # Wait for the resize to finish. while [ \ "$(aws ec2 describe-volumes-modifications \ --volume-id $VOLUMEID \ --filters Name=modification-state,Values="optimizing","completed" \ --query "length(VolumesModifications)"\ --output text)" != "1" ]; do sleep 1 done #Check if we're on an NVMe filesystem if [ $(readlink -f /dev/xvda) = "/dev/xvda" ] then # Rewrite the partition table so that the partition takes up all the space that it can. sudo growpart /dev/xvda 1 # Expand the size of the file system. # Check if we are on AL2 STR=$(cat /etc/os-release) SUB="VERSION_ID=\"2\"" if [[ "$STR" == *"$SUB"* ]] then sudo xfs_growfs -d / else sudo resize2fs /dev/xvda1 fi else # Rewrite the partition table so that the partition takes up all the space that it can. sudo growpart /dev/nvme0n1 1 # Expand the size of the file system. # Check if we're on AL2 STR=$(cat /etc/os-release) SUB="VERSION_ID=\"2\"" if [[ "$STR" == *"$SUB"* ]] then sudo xfs_growfs -d / else sudo resize2fs /dev/nvme0n1p1 fi fi
作成できたら、シェルのウィンドウで次のコマンドを実行します。 実行時に、何GBまで増やすかを指定します。今回は30GBまで増やしてみます。
$ sh resize.sh 30
実行すると、こんな感じにメッセージが表示されて、ディスクサイズの拡張が完了します。
df
コマンドを利用して、現在のディスクサイズを確認してみると、ディスクサイズが30GBに増えていることがわかります。
終わりに
Cloud9のディスクサイズの拡張方法を紹介いたしました。
Cloud9を利用すると、統合開発環境がとても簡単に構築できます。 ぜひご活用ください。